package ar.edu.utn.frsf.tpae.a2012.g01.model;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "mov")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Movimiento {
	@Id
	@Column(name = "mov_id")
	@SequenceGenerator(name = "SecuenciaMovimiento", sequenceName = "seq_mov", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SecuenciaMovimiento")
	private int mov_id;
	@Column(name = "mov_fech")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecha;
	@Column(name = "mov_mont")
	private double monto;
	@ManyToOne
	@JoinColumn(name = "mov_cta_id")
	private Cuenta cuenta;

	public Movimiento(Cuenta mov_cta_id, Date fecha, double monto) {
		this.cuenta = mov_cta_id;
		this.fecha = fecha;
		this.monto = monto;
		mov_id= 0;
	}
	public Movimiento() {
		mov_id= 0;
	}

	public int getMov_id() {
		return mov_id;
	}

	public void setMov_id(int mov_id) {
		this.mov_id = mov_id;
	}

/*	public int getMov_cta_id() {
		return mov_cta_id;
	}

	public void setMov_cta_id(int mov_cta_id) {
		this.mov_cta_id = mov_cta_id;
	}
*/
	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public double getMonto() {
		return monto;
	}

	public void setMonto(double monto) {
		this.monto = monto;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + mov_id;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Movimiento other = (Movimiento) obj;
		if (mov_id != other.getMov_id())
			return false;
		return true;
	}

	public Cuenta getCuenta() {
		return cuenta;
	}

	public void setCuenta(Cuenta cuenta) {
		this.cuenta = cuenta;
	}

}
